/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.losalpes.catalog;

import com.losalpes.persistence.entity.ItemCompra;
import com.losalpes.persistence.entity.Mueble;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.Local;
import javax.faces.model.SelectItem;
/**
 *
 * @author henry.quiroga
 */
@Local
public interface ICatalogService {

    /**
     * Borra un mueble
     * @param cMueble el mueble a borrar
     */
    void delete(Mueble cMueble);
    /**
     * Guarda un mueble en bd
     * @param mueble el mueble a cambiar
     * @return confirmacion
     */
    void save(Mueble mueble);
    /**
     * obtiene el mueble a partir del id
     * @param id identificaion del mueble
     * @return el mueble encontrado
     */
    Mueble getMueble(Long id);
    /**
     * Verifica si la referencia del mueble a almacenar existe
     * @param mueble el mueble a revkisar
     * @return verdadero o falso
     */
    boolean existeReferencia(Mueble mueble);
    /**
     * Lista de todos los muebles
     * @return un List con todos los muebles
     */
    List<Mueble> findAllMuebles();
    /**
     * Permite obtener una lista de muebles a partir de una consulta
     * @param muebleBusqueda  el muble con la informacion parametro
     * @return Lista con los muebles
     */
    List<Mueble> findMuebles(Mueble muebleBusqueda);
    /**
     * Obtiene la lista de los tipos de muebles
     * @return una lista de los tipos de items
     */
    SelectItem[] getTiposMuebles();

    /**
     * permite almacentar la informacion de los muebles, promociones y notificar las promociones
     * @param mueble el muenle de entrada
     * @return confirmacion
     */
    void saveWithNotification(com.losalpes.persistence.entity.Mueble mueble);

    /**
     * Verifica existencias de los items
     * @param items la lista de muebles a revisar
     * @return vacio si no hay problemas
     */
    String verificarExistencias(ArrayList<ItemCompra> items);

    /**
     * Permite actualizar el inventario en cantidades y valores
     * @param items la lista de lositems que van a descargarse del inventario
     * @return vacio si todo esta bien
     */
    public void actualizarInventario(java.util.ArrayList<com.losalpes.persistence.entity.ItemCompra> items);
}
